#include <iostream>
#include <limits>

using namespace std;

// C++ 中继承不会继承 父类的 构造函数， 析构函数， 友元函数,  类的重载运算符

// NOTE: 基类
class Shape
{
public:
  void set_width(int w)
  {
    width = w;
  }
  void set_height(int h)
  {
    height = h;
  }

  // C++里面定义了一个变量，但没有赋值前，它的值应该是不确定的
  // 只有指针可以为空，其实也就是指向0
  // 所以 C++ 中的变量必须有一个初始化的值，因为没有初始化的值是不确定的， 不能判断是否为空
protected:
  int width(0);
  int height(0);
};

class Rectangle : public Shape
{
public:
  int get_area()
  {
    // cout << "&this->height：" << &this->height << endl;
    // cout << "&height：" << &height << endl;
    if (this->width != 0 && this->height != 0) //
    {
      cout << "this->width：" << this->width << endl;
      cout << "this->height：" << this->height << endl;
      return this->width * this->height;
    }
    return 0;
  }
};

// 多继承(环状继承),A->D, B->D, C->(A，B)，

int main(int argc, char const *argv[])
{
  Rectangle r;
  r.set_height(10);
  r.set_width(10);
  int area = r.get_area();

  cout << "面积为：" << area << endl;
  return 0;
}
